In many digital data handling systems, a character of information is represented by a unique combination of 8 binary bits sometimes referred to as a byte. Generally, information is transferred between units of a data processing system and even within units on a byte basis, usually serial by byte. The storage of this data within the system, however, is sometimes done on a serial-by-bit, serial-by-byte basis as in a magnetic disk file storage unit. Information is therefore presented to the disk file in a serial-by-bit, serial-by-byte fashion for recording on one of a plurality of concentric recording tracks in the form of magnetic transitions occurring at predefined bit times. The recording process generally involves operating on a serial bit stream corresponding to a sequence of characters.
Various types of recording schemes have been developed in the art over the years to increase the amount of data that can be stored in the form of magnetic transitions on the magnetic media. It is known that for clocking purposes, transitions should be recorded at periodic intervals so that as the transitions are being read by a magnetic transducer and converted into a pulse stream, it is possible to divide the pulse stream into a series of bit times, generally by a variable frequency oscillator which is synchronized to predefined transitions. It is also known that a series of closely spaced transitions interact adversely with each other so that in many present day recording schemes, the serial input stream is encoded such as to prevent transitions occurring in adjacent bit cells on the magnetic media.
A class of codes have been developed in the art which are referred to as run-length limited codes. The characteristic of these codes is that a transition is guaranteed at least every "n" bit times. In these codes it is also guaranteed that adjacent transitions will be separated by at least "d" bit times. Practical examples for "d" and "n" are 2,7 and 1,4. A 2,7 run-length limited code therefore would guarantee at least two binary zeros between adjacent binary ones and no more than seven binary zeros in a sequence.
Run-length limited codes are also classified as fixed or variable rate codes. The fixed rate run-length limited code implies that the number of bits used to represent a code word is a fixed multiple of the number of bits in the data word prior to encoding, e.g., a two bit data word is encoded as a four bit code word, a three bit word is encoded as a six bit code word, etc. In a variable rate run-length limited code, there is no fixed relationship maintained in the encoding process between the number of bits in the data word and the number of bits in the code word.
Fixed length run-length codes have an advantage where the storage space is fixed, such as on a track of a magnetic disk.
Run-length limited codes are also classified as fixed or variable word length codes. The classification is in effect based on the arbitrary assignment of a combination of binary 1's and 0's in a data word code word dictionary which permits any stream of binary 1's and 0's to be divided into predefined data words.
An example of such a data word code word dictionary for a fixed rate variable word length 2,7 run-length limited code is shown below:
______________________________________ Data Word Code Word ______________________________________ 10 0100 010 100100 0010 00100100 11 1000 011 001000 0011 00001000 000 000100 ______________________________________
A system and method for encoding and decoding the fixed rate variable word length 2,7 run-length limited code shown above is disclosed and claimed in copending application Ser. No. 807,999, filed June 20, 1977, entitled "Sequential Encoding and Decoding of Variable Word Length Fixed Rate Data Codes," and assigned to the assignee of the present invention. Application Ser. No. 807,999 is a continuation of application Ser. No. 466,360, filed May 2, 1974.
When an encoder of the type disclosed in this copending application is used in connection with the storage of data represented by 8 bit bytes, successive data characters are converted into a serial-by-bit, serial-by-byte stream of bits which are supplied to the encoder. This serial bit stream is in effect segmented into data words according to the above dictionary with each data word being encoded to provide the appropriate code word.
When data is stored on a disk file, regardless of the particular code, it is also necessary to record or store special marks or patterns along with the data. In many present day disk files synchronizing patterns or marks are stored prior to the data in order to provide a signal of known frequency to which the circuitry external to the file may be synchronized. Generally, the time required to synchronize the external circuitry, such as a variable frequency oscillator (VFO), is inversely proportional to the frequency of the recorded signal so that it is desirable to provide a signal having the highest possible frequency on the disk. Additionally, a sync pattern encoded at the highest possible frequency occupies less physical recording space on a track and hence allows more usable data to be stored.
In systems which do not employ run-length limited codes, the sync pattern is generally a series of alternate ones and zeros and can be generated quite easily by serializing the same one byte a number of times to generate the appropriate signal to the encoder. The problem becomes more complex however where the encoder functions to encode the serial input stream corresponding to the sequence of eight bit characters into a run-length limited code signal, because in order to encode the highest frequency pattern, which in the example disclosed above is 100100, a 3 bit data word of 010 must be sequentially supplied to the input of the encoder. It is of course possible to supply three different 8 bit characters to achieve an input bit stream of 24 bits consisting of eight sequential 010 groups which would result in a correct sync pattern from the encoder. However, this implementation requires additional hardware, and while the additional hardware for storing the three 8 bit bytes for generating the appropriate input signal might add additional cost to the function, the main disadvantage is the cost of the control hardware which would be required, especially where the part of the control hardware could be achieving some additional control function during the time the sync pattern has to be encoded and written on the disk. The present invention provides a system for encoding a sync pattern where only one 8 bit character has to be supplied to the system in order to encode a sync pattern which is several bytes or more in length.